重新排序QTreeWidgetItem后,QTreeWidgetItem中的QWidget消失

您所在的位置:网站首页 qt itemflag 重新排序QTreeWidgetItem后,QTreeWidgetItem中的QWidget消失

重新排序QTreeWidgetItem后,QTreeWidgetItem中的QWidget消失

2023-04-07 18:34| 来源: 网络整理| 查看: 265

我已经将QTreeWidget(称为ToolsSelectorWidget)子类化,并通过重写QTreeWidget :: dropEvent()启用了重新排序

void ToolsSelectorWidget::dropEvent(QDropEvent *event) { QModelIndex droppedIndex = indexAt(event->pos()); if( !droppedIndex.isValid() || droppedIndex.parent().isValid()) { return; } QTreeWidget::dropEvent(event); }

另外,我将QWidgets(QPushButton,QLineEdit)添加到QTreeWidget的顶级项目中:

ToolsSelectorWidget::ToolsSelectorWidget(QWidget *parent) : QTreeWidget(parent) { header()->hide(); setSelectionMode(QAbstractItemView::SingleSelection); setDragEnabled(true); viewport()->setAcceptDrops(true); setDropIndicatorShown(true); setDragDropMode(QAbstractItemView::InternalMove); for(int i=0; isetFlags(part->flags() & Qt::ItemFlag((~Qt::ItemIsDropEnabled))); setItemWidget(part, 0, new QLabel("Part" + QString::number(i) + " Preview", this)); setItemWidget(part, 1, new QLineEdit("Part" + QString::number(i) + " Name", this)); setItemWidget(part, 2, new QCheckBox("Part" + QString::number(i) + " Visible", this)); setItemWidget(part, 3, new QCheckBox("Part" + QString::number(i) + " Locked", this)); } }

所以现在我有4个顶级项目,每个项目包含4个QWidgets.它正好填充它们,但当我通过拖放重新排列它们时,QWidgets消失了,我最终得到一个空行.我该怎么做才能保存它们?

之前:

在此输入图像描述

在Part2被移动并且在Part4之下之后,它的子节点已被保留,但它的锥体,即QWidgets,已经消失了:

在此输入图像描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3